/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package formula.one.urjc.circuito;

import java.io.Serializable;
import java.util.ArrayList;

/**
 *
 * @author santiago
 */
public class Circuito implements Serializable {
    private String nombre ;
    private int aforo ;
    private int canon ;
    private ArrayList<Double> rectas ;
    private ArrayList<Double> curvas ;
    private ArrayList<Integer> premios ;

    public Circuito(String nombre, int aforo, int canon,String rectas_Circuito, String curvas_Circuito) {
        this.nombre = nombre ;
        this.aforo = aforo ;
        this.canon = canon ;
        //this.setRectas(anadirRecta(rectas_Circuito)) ;
        //this.setCurvas(anadirCurva(curvas_Circuito)) ;
        rectas=parseListDouble(rectas_Circuito);
        curvas=parseListDouble(curvas_Circuito);
        this.setPremios() ;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getAforo() {
        return aforo;
    }

    public void setAforo(int aforo) {
        this.aforo = aforo;
    }

    public int getCanon() {
        return canon;
    }

    public void setCanon(int canon) {
        this.canon = canon;
    }

    public ArrayList<Double> getRectas() {
        return rectas;
    }

    public void setRectas(ArrayList<Double> rectas) {
        this.rectas = rectas;
    }

    public ArrayList<Double> getCurvas() {
        return curvas;
    }

    public void setCurvas(ArrayList<Double> curvas) {
        this.curvas = curvas;
    }
    
    
    /*public ArrayList<Integer> anadirRecta(int rectas) {
        ArrayList<Integer> arrayRectas = new ArrayList<Integer>() ;
        for (int i=0; i<rectas; i++) {
            System.out.println("Recta: " + i) ;
            arrayRectas.add(i) ;
        }
        return arrayRectas ;
    }*/

    public ArrayList<Integer> getPremios() {
        return premios;
    }

    public void setPremios() {
        ArrayList<Integer> premios_Circuito = new ArrayList<Integer>() ;
        premios_Circuito.add(100000) ;
        premios_Circuito.add(75000) ;
        premios_Circuito.add(50000) ;
        premios_Circuito.add(25000) ;
        premios_Circuito.add(15000) ;
        premios_Circuito.add(10000) ;
        this.premios = premios_Circuito;
    }
    
    /*public ArrayList<Integer> anadirCurva(int curvas) {
        ArrayList<Integer> arrayCurvas = new ArrayList<Integer>() ;
        for (int i=0; i<curvas; i++) {
            System.out.println("Curva: " + i) ;
            arrayCurvas.add(i) ;
        }
        return arrayCurvas ;
    }*/
    
    public String resumeToString(){
        return nombre + " canón:"+canon;
    }
    
    @Override
    
    public String toString() {
        return "Circuito: {" + "nombre = " + nombre + "\n" +
                               "aforo = " + aforo + "\n" +
                               "canon = " + canon + "\n" +
                               "# rectas = " + rectas.size() + "\n" +
               "}" ;
    }
    
    
    //método que convierte una cadena de kilometraje de curvas o rectas en un array
    private ArrayList<Double> parseListDouble(String str){
        double item=0;
        ArrayList<Double> items=new ArrayList<Double>();
        try{
            //En el caso de que se utilice la coma como separador de decimal la cambio por punto
            if(str.indexOf(",")!=-1){
                str=str.replace(",", ".");
            }
            //separo los valores de los items
            if(str.indexOf(";")!=-1){
                String[] strItems=str.split(";");
                for(int i=0;i<strItems.length;i++){
                    item=Double.parseDouble(strItems[i].trim());
                    items.add(item);
                }
            }else{
                item=Double.parseDouble(str.trim());
                items.add(item);
            }
            return items;
        }catch (NumberFormatException e){
            return null;
        }
        
    }
    public String parseString(ArrayList<Double> list){
        String res="";
        for(int i=0;i<list.size();i++){
            res+=list.get(i);
            if(i<list.size()-1){
                res+=";";
            }
        }
        return res;
    }
   
 }
